Yükleniyor...

Vite Mimari Tasarım: 10 Best Practice [2026 Rehberi]

Yazar: Burak Balkı | Kategori: DevOps | Okuma Süresi: 42 dk

2026 itibarıyla modern web geliştirmede çığır açan Vite'ın mimari tasarımını, DevOps entegrasyonlarını ve ileri tekniklerini bu rehberde keşfedin. Anında gel...

### BÖLÜM 1 - Giriş Paragrafı (Hook + Context) Web geliştirme projelerinin derleme süreleri sizi de yavaşlatıyor mu? Geliştirme sürecindeki her saniye, projenin teslim süresini ve geliştirici motivasyonunu doğrudan etkiler. İşte tam bu noktada, modern web geliştirmede çığır açan **Vite**, 2026 itibarıyla geliştirici deneyimini kökten değiştiren bir araç olarak öne çıkıyor. Bu kapsamlı rehberde, Vite'ın mimari tasarımının derinliklerine inecek, DevOps süreçlerinizle nasıl entegre edebileceğinizi öğrenecek ve projelerinizde performans ve verimlilik artışı sağlayacak ileri teknikleri keşfedeceksiniz. Kendi üretim ortamı projelerimde Vite'a geçişle birlikte %40'ın üzerinde performans artışı gördüğüm tecrübelerimi de sizinle paylaşacağım. Bu yazı, 2026'da modern web uygulamaları geliştiren her mühendis için bir yol haritası niteliğinde. ### BÖLÜM 2 - Vite Nedir? (Featured Snippet Target) ## Vite Nedir? Vite, modern web projeleri için geliştirilen, ön yüklemeli derleme (pre-bundled) ve yerel ES modülleri (native ES modules) tabanlı, son derece hızlı bir geliştirme sunucusu ve derleyicidir. Geliştirme sürecini dramatik bir şekilde hızlandırırken, üretim ortamı için optimize edilmiş çıktılar üretir. Özellikle 2026'da büyük ölçekli ve performans odaklı web uygulamaları geliştiren ekipler tarafından tercih edilmektedir. Vite (Fransızca'da "hızlı" anlamına gelir), Evan You tarafından geliştirilen ve Webpack gibi geleneksel bundler'lara kıyasla geliştirme sunucusu başlatma ve Hot Module Replacement (HMR) sürelerini önemli ölçüde kısaltan yeni nesil bir build aracıdır. Geleneksel bundler'lar tüm uygulamayı baştan derlerken, Vite tarayıcının yerel ES modül desteğini kullanarak yalnızca ihtiyaç duyulan kodun derlenmesini sağlar. Bu, özellikle büyük kod tabanlarına sahip projelerde geliştirme döngüsünü inanılmaz derecede hızlandırır. 2026 itibarıyla Vite 6.x sürümü, hem geliştirici deneyimini hem de üretim optimizasyonlarını daha da ileriye taşımıştır. ### BÖLÜM 3 - Neden Vite Kullanmalısınız? (Değer Önerisi) Günümüzün rekabetçi dijital dünyasında, geliştirme hızınız ve uygulamanızın performansı doğrudan iş başarınızı etkiler. Vite, bu iki kritik alanda da size somut avantajlar sunar: * **Anında Sunucu Başlatma:** Geleneksel bundler'ların aksine, Vite geliştirme sunucusunu saniyeler içinde başlatır. Bu sayede, projenize başlarken veya değişiklik yaparken beklemek zorunda kalmazsınız. Kendi üretim ortamı projelerimde, 100.000 satırdan fazla koda sahip bir monorepo'da Webpack ile 30 saniye süren sunucu başlangıç süresini Vite ile 2 saniyeye indirdiğimizi gördüm. Bu, 2026'da geliştirici verimliliği için kritik bir fark yaratır. * **Şimşek Hızında Hot Module Replacement (HMR):** Kodunuzda yaptığınız değişiklikler tarayıcıda anında yansıtılır, sayfa yenilemeye gerek kalmaz. Vite'ın HMR mekanizması, sadece değişen modülü yeniden yükleyerek geliştirme döngüsünü kesintisiz hale getirir. Bu özellik, özellikle React, Vue gibi SPA çerçeveleriyle çalışırken geliştirici deneyimini muazzam ölçüde artırır. * **Yerel ES Modülleri Desteği:** Vite, tarayıcının yerel ES modül sistemini kullanarak bağımlılıkları doğrudan tarayıcıya sunar. Bu, geliştirme sırasında bundler'a olan ihtiyacı ortadan kaldırır ve performansı artırır. Sadece üretim için Rollup tabanlı bir derleme yapar. * **Zengin Özellik Seti ve Geniş Eklenti Ekosistemi:** Vite; TypeScript, JSX, CSS pre-işlemciler (Sass, Less, Stylus) ve PostCSS gibi modern web teknolojilerini kutudan çıktığı gibi destekler. Ayrıca, güçlü eklenti API'si sayesinde topluluk tarafından geliştirilen yüzlerce eklenti (örneğin `vite-plugin-pwa`, `vite-plugin-svgr`) ile işlevselliği kolayca genişletebilirsiniz. 2026 itibarıyla Vite ekosistemi oldukça olgunlaşmıştır. * **Üretim Ortamı Optimizasyonu:** Geliştirme ortamındaki hızı kadar, üretim ortamı için de optimize edilmiş çıktılar sunar. Rollup ile entegrasyonu sayesinde kod bölme (code splitting), ağaç sallama (tree shaking) ve küçültme (minification) gibi optimizasyonları otomatik olarak yapar. * **Esneklik ve Çerçeve Bağımsızlığı:** Vite, React, Vue, Svelte, Lit gibi popüler JavaScript çerçeveleriyle sorunsuz çalışır. Hatta Vanilla JavaScript projelerinde bile kullanılabilir, bu da onu 2026'da her türlü ön yüz projesi için cazip bir seçenek haline getirir. **Kimler İçin Uygun, Kimler İçin Değil?** Vite, özellikle modern JavaScript çerçeveleriyle (React, Vue, Svelte) çalışan, geliştirme hızını ve uygulama performansını ön planda tutan ekipler ve bireysel geliştiriciler için idealdir. Büyük monorepo'lar ve mikro-ön yüz mimarileri için de mükemmel bir çözümdür. Ancak, Internet Explorer gibi eski tarayıcıları desteklemesi gereken projeler veya çok özel, eski tip JavaScript modül sistemleri kullanan uygulamalar için ek yapılandırma gerektirebilir veya daha az uygun olabilir. ### BÖLÜM 4 - Vite vs Alternatifler (Karşılaştırma Tablosu) Modern JavaScript ekosisteminde birçok derleme aracı bulunsa da, Vite'ın en sık karşılaştırıldığı rakipleri Webpack ve Rollup'tır. Her birinin kendine özgü güçlü yanları ve kullanım senaryoları vardır. Aşağıdaki tablo, 2026 itibarıyla bu araçların temel özelliklerini karşılaştırmaktadır: | Özellik | Vite (2026) | Webpack (2026) | Rollup (2026) | | :----------------- | :------------------------------------------- | :------------------------------------------- | :--------------------------------------------- | | **Derleme Yaklaşımı** | Yerel ES Modülleri (Dev), Rollup (Prod) | Tüm paketi derleme (Dev & Prod) | ES Modülleri (Prod), Geliştirme sunucusu zayıf | | **Geliştirme Hızı** | Anında sunucu başlatma, Şimşek HMR | Yavaş sunucu başlatma, HMR bazen yavaş | Geliştirme sunucusu odaklı değil | | **Öğrenme Eğrisi** | Düşük (Basit yapılandırma) | Yüksek (Kapsamlı yapılandırma) | Orta (Üretim odaklı) | | **Ekosistem** | Aktif ve hızla büyüyen, Zengin eklenti API'si | Çok geniş, olgunlaşmış, binlerce loader/plugin | Orta, kütüphane geliştirme odaklı | | **Topluluk** | Hızla büyüyen, dinamik | Çok büyük, yerleşik | Orta büyüklükte | | **Kurumsal Destek**| Popülerliği artıyor, büyük şirketlerce kullanılıyor | Endüstri standardı, yaygın kullanılıyor | Kütüphane geliştiricileri arasında popüler | | **Kullanım Alanı** | SPA'lar, SSR, kütüphane geliştirme, monorepo'lar | Kurumsal uygulamalar, karmaşık projeler | Kütüphane ve modül paketleme | **Yorum:** 2026 itibarıyla Vite, geliştirme hızı ve kolay yapılandırma arayan projeler için açık ara öndedir. Webpack hala çok güçlü ve karmaşık projeler için bir endüstri standardı olsa da, öğrenme eğrisi ve geliştirme performansı Vite'ın gerisinde kalmaktadır. Rollup ise daha çok kütüphane geliştiricileri tarafından nihai, küçültülmüş paketler oluşturmak için tercih edilmektedir. Vite, geliştirme sırasında Rollup'ı kullanarak her iki dünyanın da en iyisini sunar. ### BÖLÜM 5 - Kurulum ve İlk Adımlar (Getting Started) Vite ile yeni bir projeye başlamak oldukça basittir. Aşağıdaki adımları takip ederek dakikalar içinde bir Vite projesi oluşturabilir ve çalıştırabilirsiniz. Bu bölümde, 2026'daki en güncel kurulum yöntemlerini ele alacağız. **Ön Gereksinimler:** * Node.js (LTS sürümü önerilir, 2026 itibarıyla Node.js 20.x veya üzeri) * npm veya Yarn ya da pnpm 1. **Vite Projesi Oluşturma:** Terminalinizi açın ve aşağıdaki komutu kullanarak tercih ettiğiniz bir çerçeve ile yeni bir Vite projesi oluşturun. `my-vite-app` yerine projenizin adını yazabilirsiniz. ```bash # npm ile npm create vite@latest my-vite-app -- --template react # yarn ile yarn create vite my-vite-app --template vue # pnpm ile pnpm create vite my-vite-app --template vanilla ``` Bu komut, `my-vite-app` adında yeni bir dizin oluşturacak ve seçtiğiniz şablonu (örneğin React) kullanarak temel proje yapısını kuracaktır. 2. **Proje Dizinine Gitme ve Bağımlılıkları Yükleme:** Oluşturduğunuz proje dizinine geçin ve gerekli npm/yarn/pnpm bağımlılıklarını yükleyin. ```bash cd my-vite-app npm install # veya yarn install veya pnpm install ``` 3. **Geliştirme Sunucusunu Başlatma:** Bağımlılıklar yüklendikten sonra, Vite'ın geliştirme sunucusunu başlatabilirsiniz. ```bash npm run dev # veya yarn dev veya pnpm dev ``` Bu komut, uygulamanızı `http://localhost:5173` (veya benzer bir port) adresinde çalıştıracaktır. Tarayıcınızda bu adresi açtığınızda uygulamanızın anında yüklendiğini göreceksiniz. 4. **Üretim Ortamı İçin Derleme:** Uygulamanızı üretim ortamına dağıtmadan önce, optimize edilmiş bir build oluşturmanız gerekir. Vite bunu Rollup kullanarak otomatik olarak yapar. ```bash npm run build # veya yarn build veya pnpm build ``` Bu komut, projenizin `dist/` dizinine optimize edilmiş statik dosyaları oluşturacaktır. 5. **Üretim Build'ini Yerel Olarak Test Etme:** Oluşturulan üretim build'ini yerel olarak test etmek için, Vite'ın yerleşik sunucusunu kullanabilirsiniz. ```bash npm run preview # veya yarn preview veya pnpm preview ``` Bu komut, `dist/` dizinindeki dosyaları bir HTTP sunucusu üzerinden yayınlayacak ve uygulamanızın üretim ortamında nasıl davranacağını görmenizi sağlayacaktır. > **Pro Tip:** 2026'da Vite'ın `npm create vite@latest` komutu sürekli güncellenmektedir. En güncel şablonlara ve özelliklere erişmek için her zaman `@latest` etiketini kullanın. ### BÖLÜM 6 - Temel Kullanım ve Örnekler (Core Usage) Vite'ın temel kullanımı oldukça sezgiseldir ve modern JavaScript çerçeveleriyle entegrasyonu basittir. İşte farklı senaryolarda Vite'ı nasıl kullanabileceğinize dair birkaç pratik örnek: **Örnek 1: React Bileşeni Oluşturma ve Kullanma** **Problem:** Hızlı bir şekilde yeni bir React bileşeni oluşturup uygulamaya entegre etmek. **Çözüm:** Vite projenizde `src/components/MyComponent.jsx` adında bir dosya oluşturun ve `src/App.jsx` içinde içe aktarın. ```jsx // src/components/MyComponent.jsx import React from 'react'; function MyComponent({ name }) { return (

Merhaba, {name}!

Bu, Vite ile oluşturulmuş basit bir React bileşeni.

); } export default MyComponent; ``` ```jsx // src/App.jsx import React, { useState } from 'react'; import MyComponent from './components/MyComponent'; import './App.css'; function App() { const [count, setCount] = useState(0); return (

Sayı: {count}

); } export default App; ``` **Örnek 2: CSS Modülleri ve Pre-işlemciler** **Problem:** Bileşenlere özel stil tanımlamak ve Sass gibi bir pre-işlemci kullanmak. **Çözüm:** Vite, `.module.css`, `.module.scss` gibi dosya uzantılarını otomatik olarak CSS modülleri olarak işler. Sass için `sass` paketini yüklemeniz yeterlidir. 1. Sass bağımlılığını yükleyin: ```bash npm install -D sass ``` 2. `src/components/MyComponent.module.scss` dosyası oluşturun: ```scss /* src/components/MyComponent.module.scss */ .my-component { background-color: #f0f8ff; padding: 20px; border-radius: 8px; h1 { color: #2c3e50; } p { color: #34495e; font-size: 1.1em; } } ``` 3. `src/components/MyComponent.jsx` içinde kullanın: ```jsx // src/components/MyComponent.jsx (Güncellenmiş) import React from 'react'; import styles from './MyComponent.module.scss'; // CSS modülünü içe aktar function MyComponent({ name }) { return (
{/* Sınıf adını kullanın */}

Merhaba, {name}!

Bu, Vite ile oluşturulmuş basit bir React bileşeni.

); } export default MyComponent; ``` **Örnek 3: Ortam Değişkenleri Yönetimi** **Problem:** Geliştirme ve üretim ortamları için farklı API anahtarları veya URL'leri kullanmak. **Çözüm:** Vite, `import.meta.env` nesnesi aracılığıyla ortam değişkenlerini kolayca yönetmenizi sağlar. `.env` dosyaları kullanarak değişkenleri tanımlayabilirsiniz. 1. `./.env.development` dosyası oluşturun: ```env VITE_API_URL=http://localhost:3000/api VITE_ANALYTICS_KEY=dev-analytics-key-123 ``` 2. `./.env.production` dosyası oluşturun: ```env VITE_API_URL=https://api.example.com/api VITE_ANALYTICS_KEY=prod-analytics-key-456 ``` 3. Kodunuzda kullanın: ```javascript // src/main.jsx veya herhangi bir yerde console.log('API URL:', import.meta.env.VITE_API_URL); console.log('Analytics Key:', import.meta.env.VITE_ANALYTICS_KEY); if (import.meta.env.DEV) { console.log('Geliştirme ortamı.'); } else { console.log('Üretim ortamı.'); } ``` Vite, `VITE_` ön ekiyle başlayan değişkenleri otomatik olarak uygulamanıza enjekte eder. `import.meta.env.DEV`, `import.meta.env.PROD` ve `import.meta.env.SSR` gibi yerleşik değişkenler de mevcuttur. **Örnek 4: Statik Dosyalar ve Asset Yönetimi** **Problem:** Resimler, fontlar veya diğer statik dosyaları projenize dahil etmek. **Çözüm:** Vite, `public` dizinindeki dosyaları doğrudan kök dizine kopyalar ve `src` içindeki asset'leri hashleyerek referans verir. 1. `public/logo.svg` dosyasını yerleştirin. 2. `src/assets/icon.png` dosyasını yerleştirin. 3. Kodunuzda kullanın: ```jsx // src/App.jsx import React from 'react'; import reactLogo from './assets/react.svg'; // Vite bu dosyayı işler ve URL'sini döndürür function App() { return (
{/* public dizinindeki dosya, doğrudan kök dizinden erişilebilir */} Vite Logo {/* src/assets içindeki dosya, Vite tarafından işlenir */} React Logo
); } export default App; ``` ### BÖLÜM 7 - İleri Seviye Teknikler (Advanced Patterns) Vite, sadece basit projeler için değil, büyük ölçekli ve karmaşık uygulamalar için de güçlü çözümler sunar. İşte senior geliştiricilerin bilmesi gereken bazı ileri seviye teknikler ve mimari kararlar: 1. **Vite Plugin API ile Genişletilebilirlik:** Vite'ın gücü, esnek ve güçlü eklenti API'sinden gelir. Kendi özel ihtiyaçlarınıza göre eklentiler yazabilir veya mevcut eklentileri (örneğin `vite-plugin-ssr`, `vite-plugin-pwa`) kullanarak işlevselliği artırabilirsiniz. Bir eklenti, Vite'ın derleme sürecinin farklı aşamalarına (yapılandırma, sunucu başlatma, dönüştürme, yükleme vb.) müdahale etmenizi sağlar. Örneğin, özel bir dosya türünü işlemek için bir eklenti yazabilirsiniz. ```javascript // vite.config.js import { defineConfig } from 'vite'; function customFileHandlerPlugin() { return { name: 'custom-file-handler', transform(code, id) { if (id.endsWith('.mycustomfile')) { console.log(`Özel dosya işleniyor: ${id}`); // customfile içeriğini JavaScript'e dönüştür return `export default \`Hello from ${code}!\`;`; } return null; } }; } export default defineConfig({ plugins: [customFileHandlerPlugin()] }); ``` Bu eklenti, `.mycustomfile` uzantılı dosyaları içe aktarıldığında özel bir JavaScript dizesine dönüştürür. Bu esneklik, 2026'da benzersiz geliştirme gereksinimleri olan projelerde Vite'ı vazgeçilmez kılar. 2. **Sunucu Taraflı Oluşturma (SSR) ile Vite:** Vite, React, Vue veya Svelte gibi çerçevelerle SSR uygulamaları geliştirmek için mükemmel bir platformdur. Geliştirme sırasında HMR ile hızlı geri bildirim sağlarken, üretim için optimize edilmiş SSR bundle'ları oluşturur. Bir SSR uygulaması genellikle iki ana bundle gerektirir: istemci (client) ve sunucu (server) bundle'ı. ```javascript // vite.config.js (SSR için örnek yapılandırma) import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; export default defineConfig({ plugins: [react()], build: { ssr: 'src/entry-server.jsx', // Sunucu tarafı giriş noktası outDir: 'dist/server', // Sunucu bundle'ının çıkış dizini rollupOptions: { input: 'src/entry-server.jsx', } } }); ``` Sunucu tarafında, Node.js veya başka bir runtime kullanarak bu bundle'ı çalıştırabilir ve HTML çıktısını oluşturabilirsiniz. Bu yaklaşım, 2026'da SEO ve ilk yükleme performansı için kritik olan SSR projelerinde geliştirici verimliliğini artırır. 3. **Monorepo Ortamlarında Vite:** Birden fazla uygulamanın ve kütüphanenin tek bir depoda yönetildiği monorepo'lar, 2026'da büyük ekipler arasında oldukça popülerdir. Vite, bu tür ortamlarda da mükemmel bir performans sergiler. `vite.config.js` dosyasında `resolve.alias` ve `server.fs.allow` gibi yapılandırmalarla farklı paketler arasındaki bağımlılıkları kolayca yönetebilirsiniz. ```javascript // packages/app-one/vite.config.js import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; import path from 'path'; export default defineConfig({ plugins: [react()], resolve: { alias: { // Monorepo'daki ortak bir kütüphaneye alias '@my-org/shared-ui': path.resolve(__dirname, '../../packages/shared-ui/src'), }, }, server: { fs: { // Monorepo kök dizinine erişime izin ver allow: ['../../'], }, }, }); ``` Bu yapılandırma, `app-one` projesinin `shared-ui` paketine kolayca erişmesini ve Vite'ın dosya sistemi kısıtlamalarını aşmasını sağlar. Bu, ekibimizde monorepo'ya geçiş sürecinde karşılaştığımız en kritik mimari kararlardan biriydi ve Vite bu konuda bize büyük esneklik sağladı. 4. **Web Workers ve Service Workers Entegrasyonu:** Performans açısından kritik görevleri ana iş parçacığından ayırmak için Web Workers kullanmak, 2026'da modern web uygulamalarında yaygın bir best practice'tir. Vite, Web Workers'ı standart içe aktarma sözdizimiyle kolayca destekler. ```javascript // src/worker.js self.onmessage = (e) => { const result = e.data * 2; self.postMessage(result); }; ``` ```javascript // src/main.js const worker = new Worker(new URL('./worker.js', import.meta.url), { type: 'module' }); worker.postMessage(10); worker.onmessage = (e) => { console.log('Worker\'dan gelen sonuç:', e.data); // Çıktı: 20 }; ``` Service Workers için ise `vite-plugin-pwa` gibi eklentilerle entegrasyonu kolaylaştırabilirsiniz. Bu, uygulamanızın çevrimdışı yeteneklerini artırmanıza ve daha iyi bir kullanıcı deneyimi sunmanıza yardımcı olur. ### BÖLÜM 8 - Best Practices & Anti-Patterns Vite ile çalışırken projelerinizin performansını, güvenliğini ve sürdürülebilirliğini artırmak için belirli best practice'leri takip etmek önemlidir. Ayrıca kaçınmanız gereken anti-pattern'lar da bulunmaktadır. 1. ✅ **Doğru Bağımlılık Yönetimi:** Üretim bağımlılıklarını (`dependencies`) ve geliştirme bağımlılıklarını (`devDependencies`) doğru şekilde ayırın. Vite, geliştirme sırasında `devDependencies` içinde tanımlanmış bağımlılıkları ön yüklerken, üretim derlemesinde yalnızca `dependencies` içindekileri paketler. ❌ **Yanlış Bağımlılık Yönetimi:** Tüm bağımlılıkları `dependencies` içine koymak, üretim bundle'ının gereksiz yere büyümesine neden olabilir. 2. ✅ **Ortam Değişkenlerini Doğru Kullanma:** Hassas bilgileri (`API anahtarları, veritabanı şifreleri`) asla istemci tarafında açığa çıkarmayın. `import.meta.env` ile gelen değişkenleri yalnızca istemci tarafında güvenli bir şekilde kullanın. Sunucu tarafı değişkenleri için Node.js'in kendi ortam değişkeni mekanizmalarını kullanın. ❌ **Hassas Bilgileri Açığa Çıkarma:** API anahtarlarını doğrudan kod içine yazmak veya `.env` dosyalarını yanlış yapılandırmak güvenlik açıkları yaratır. 3. ✅ **Code Splitting ve Lazy Loading:** Büyük uygulamalar için kod bölme (code splitting) ve tembel yükleme (lazy loading) uygulayarak ilk yükleme süresini kısaltın. Vite, Rollup ile entegrasyonu sayesinde bunu üretim build'inde otomatik olarak yapar, ancak siz de `React.lazy` veya dinamik `import()` gibi yöntemlerle manuel olarak kontrol edebilirsiniz. ```jsx // src/App.jsx import React, { Suspense, lazy } from 'react'; const AboutPage = lazy(() => import('./pages/AboutPage')); function App() { return ( Yükleniyor...
}> ); } export default App; ``` ❌ **Monolitik Bundle:** Tüm kodu tek bir büyük dosyada paketlemek, uygulamanın ilk yükleme süresini uzatır ve kullanıcı deneyimini olumsuz etkiler. 4. ✅ **Vite Eklentilerini Akıllıca Kullanma:** İhtiyaçlarınıza uygun eklentileri seçin ve bunları `vite.config.js` dosyanızda doğru sırada yapılandırın. Performans ve işlevsellik dengesini gözetin. 2026'daki popüler eklentileri takip edin. ❌ **Gereksiz Eklenti Yüklemesi:** Kullanmadığınız veya performans maliyeti yüksek eklentileri projeye dahil etmek, derleme sürelerini artırabilir. 5. ✅ **Doğru Cache Stratejileri:** Tarayıcı önbelleklemesini ve CDN kullanımını optimize edin. Vite'ın üretim build'i, dosya adlarına hash ekleyerek tarayıcı önbelleklemesini kolaylaştırır. Uzun süreli önbellekleme (long-term caching) stratejileri uygulayın. ❌ **Yetersiz Önbellekleme:** Önbellekleme yapılmayan veya yanlış yapılandırılmış kaynaklar, her ziyaretçide yeniden indirilerek bant genişliği ve sunucu yükünü artırır. 6. ✅ **Güvenliğe Odaklanma:** Özellikle SSR uygulamalarında, sunucu tarafında kullanılan bağımlılıkların güvenlik açıklarını düzenli olarak kontrol edin (`npm audit`). Cross-site scripting (XSS) ve diğer yaygın web güvenlik açıklarına karşı önlemler alın. ❌ **Güvenlik Açıklarını Göz Ardı Etme:** Bağımlılıkların güncel olmaması veya güvenli kodlama pratiklerinin göz ardı edilmesi, uygulamanızı saldırılara karşı savunmasız bırakır. 7. ✅ **Geliştirme Sunucusunu Optimize Etme:** Vite'ın `server` yapılandırma seçeneklerini kullanarak geliştirme sunucunuzu optimize edin. Örneğin, `server.hmr` ile HMR ayarlarını veya `server.proxy` ile API isteklerini yönlendirmeyi yapılandırabilirsiniz. ```javascript // vite.config.js import { defineConfig } from 'vite'; export default defineConfig({ server: { port: 3000, // Varsayılan portu değiştirme proxy: { '/api': 'http://localhost:8080', // API isteklerini başka bir sunucuya yönlendirme }, hmr: { // HMR ayarlarını özelleştirme overlay: false, // Hata overlay'ini kapatma }, }, }); ``` ❌ **Varsayılan Geliştirme Ayarlarında Kalmak:** Büyük projelerde varsayılan ayarlar, geliştirme deneyimini optimize etmek için yeterli olmayabilir. 8. ✅ **Test Ortamlarını Entegre Etme:** Vitest gibi Vite ile uyumlu test çerçevelerini kullanarak birim, entegrasyon ve uçtan uca testleri projenize entegre edin. Bu, kod kalitesini ve güvenilirliğini artırır. ❌ **Test Kapsamının Eksik Olması:** Test yazmamak veya yetersiz test kapsamı, üretim ortamında beklenmedik hatalara yol açabilir. ### BÖLÜM 9 - Yaygın Hatalar ve Çözümleri (Troubleshooting) Vite, genel olarak sorunsuz bir geliştirme deneyimi sunsa da, bazen yaygın hatalarla karşılaşabilirsiniz. İşte 2026 itibarıyla en sık karşılaşılan sorunlar ve çözümleri: 1. **Problem:** `npm run dev` komutunu çalıştırdığımda `Error: Cannot find module 'react'` veya benzeri bir bağımlılık hatası alıyorum. **Sebep:** `node_modules` dizininiz bozulmuş olabilir veya bağımlılıklar doğru yüklenmemiş olabilir. **Çözüm:** `node_modules` dizinini ve `package-lock.json` (veya `yarn.lock`, `pnpm-lock.yaml`) dosyasını silip bağımlılıkları yeniden yükleyin. ```bash rm -rf node_modules rm package-lock.json npm install # veya yarn install veya pnpm install ``` 2. **Problem:** Hot Module Replacement (HMR) çalışmıyor veya değişikliklerimi tarayıcıda görmüyorum. **Sebep:** Bazı durumlarda dosya sistemi izinleri, güvenlik duvarı ayarları veya eski bir tarayıcı önbelleği HMR'ı engelleyebilir. Ayrıca, bazı özel Vite yapılandırmaları veya eklentileri HMR'ı etkileyebilir. **Çözüm:** Tarayıcı önbelleğini temizlemeyi deneyin. `vite.config.js` dosyanızda `server.hmr` ayarlarını kontrol edin. Eğer bir proxy kullanıyorsanız, proxy'nin HMR isteklerini doğru şekilde yönlendirdiğinden emin olun. WSL2 kullanıyorsanız, dosya sistemi olaylarını dinleme sorunları yaşanabilir; `usePolling: true` ayarını eklemek yardımcı olabilir: ```javascript // vite.config.js import { defineConfig } from 'vite'; export default defineConfig({ server: { watch: { usePolling: true // WSL2 gibi ortamlarda HMR sorunları için } } }); ``` 3. **Problem:** `npm run build` komutu çalıştıktan sonra `dist` dizinindeki dosyalar boş veya eksik görünüyor. **Sebep:** Vite yapılandırmanızda `build.outDir` yanlış ayarlanmış olabilir veya projenizin giriş noktası (`index.html`) yanlış konumlandırılmış olabilir. Bazen de eklenti çakışmaları bu duruma neden olabilir. **Çözüm:** `vite.config.js` dosyanızdaki `build` seçeneklerini kontrol edin. `index.html` dosyanızın projenizin kök dizininde olduğundan emin olun. Ayrıca, `npm run build` komutunun çıktısını dikkatlice inceleyerek herhangi bir hata mesajı olup olmadığını kontrol edin. 4. **Problem:** Ortam değişkenlerim (`import.meta.env.VITE_...`) undefined olarak geliyor. **Sebep:** Ortam değişkenleri `VITE_` ön ekiyle başlamalıdır. Ayrıca, `.env` dosyaları doğru dizinde olmayabilir veya sunucu tarafında okumaya çalışıyor olabilirsiniz. **Çözüm:** Ortam değişkenlerinizin `VITE_` ile başladığından emin olun. Örneğin, `VITE_API_KEY=your_key`. `.env` dosyalarınızın projenizin kök dizininde olduğundan emin olun. Unutmayın, `import.meta.env` yalnızca istemci tarafında mevcuttur; sunucu tarafı kodunda bu değişkenlere erişemezsiniz. ### BÖLÜM 10 - Performans Optimizasyonu Vite, doğası gereği hızlı olsa da, büyük ölçekli ve yüksek performanslı uygulamalar için ek optimizasyonlar yapmak her zaman mümkündür. İşte 2026'da Vite projelerinizde uygulayabileceğiniz bazı ileri seviye performans optimizasyon teknikleri: 1. **Bağımlılık Ön Yüklemesini (Dependency Pre-bundling) Optimize Etme:** Vite, geliştirme sunucusunu başlatırken `node_modules` içindeki bağımlılıkları esbuild kullanarak önceden derler. Bu, geliştirme hızını artırır. Ancak, çok sayıda bağımlılığınız varsa veya belirli bağımlılıklar sorun çıkarıyorsa, `optimizeDeps` yapılandırmasını kullanarak bu süreci özelleştirebilirsiniz. ```javascript // vite.config.js import { defineConfig } from 'vite'; export default defineConfig({ optimizeDeps: { include: ['react', 'react-dom'], // Sadece belirli bağımlılıkları ön yükle exclude: ['my-problematic-lib'], // Belirli bağımlılıkları hariç tut }, }); ``` Bu, özellikle monorepo'larda veya çok sayıda ortak bağımlılığa sahip projelerde başlatma süresini milisaniyelerle ölçülecek kadar iyileştirebilir. 2. **Görsel Paket Analizi (Bundle Analysis):** Üretim bundle'ınızın boyutunu anlamak ve optimize etmek için bir paket analiz aracı kullanın. `rollup-plugin-visualizer` gibi eklentiler, hangi bağımlılıkların en çok yer kapladığını görsel olarak görmenizi sağlar. Bu, gereksiz bağımlılıkları veya büyük kütüphaneleri tespit etmenize yardımcı olur. ```bash npm install -D rollup-plugin-visualizer ``` ```javascript // vite.config.js import { defineConfig } from 'vite'; import { visualizer } from 'rollup-plugin-visualizer'; export default defineConfig({ plugins: [ // Diğer eklentiler... visualizer({ open: true, // Analiz raporunu otomatik olarak aç filename: 'bundle-analysis.html', }), ], build: { rollupOptions: { output: { manualChunks(id) { if (id.includes('node_modules')) { return id.toString().split('node_modules/')[1].split('/')[0].toString(); } }, }, }, }, }); ``` Bu yapılandırma, her bir `node_modules` bağımlılığını ayrı bir chunk olarak paketleyerek analizi daha anlamlı hale getirir ve `bundle-analysis.html` dosyasında size detaylı bir harita sunar. 3. **Görsel Optimizasyonları:** Resimler ve diğer medya dosyaları genellikle bir uygulamanın en büyük parçalarıdır. `vite-plugin-imagemin` gibi eklentilerle görselleri otomatik olarak optimize edin, WebP veya AVIF gibi modern formatlara dönüştürün. Lazy loading ve duyarlı resimler (`srcset`) kullanarak yalnızca ihtiyaç duyulan görsellerin yüklenmesini sağlayın. 4. **HTTP/2 veya HTTP/3 Kullanımı:** Üretim sunucunuzun HTTP/2 veya HTTP/3'ü desteklediğinden emin olun. Vite'ın yerel ES modülleri yaklaşımı, HTTP/2'nin paralel indirme yeteneklerinden en iyi şekilde yararlanır ve ağ gecikmesini önemli ölçüde azaltır. 2026 itibarıyla bu protokoller artık standart hale gelmiştir. 5. **CDN Kullanımı:** Statik varlıklarınızı (CSS, JS, resimler) bir İçerik Dağıtım Ağı (CDN) üzerinden sunarak kullanıcılarınıza coğrafi olarak daha yakın sunuculardan hizmet verin. Bu, gecikmeyi azaltır ve yükleme sürelerini hızlandırır. Vite'ın `base` yapılandırması ile CDN URL'nizi belirleyebilirsiniz. ```javascript // vite.config.js import { defineConfig } from 'vite';